package com.countantProject.service;

import com.countantProject.bean.Customer;

/**
 * @author Lenl
 * @create 2021-05-29 11:48
 * 提供Customer类的增删查改供view调用
 */
public class CustomerList {
    private Customer[] customers;//保存客户对象的数组
    private int total=0;//记录已保存客户对象的数量

    //region 构造器与方法

    /**
     * 用来初始数组的构造器
     * @param totalCustomer 指定数组长度
     */
    public CustomerList(int totalCustomer){
        customers=new Customer[totalCustomer];
    }

    /**
     * 将指定客户添加到数组中
     * @param customer 待添加客户类
     * @return 是否成功
     */
    public  boolean addCustomer(Customer customer){
        if(total>=customers.length){
            return  false;
        }
        customers[total++]=customer;
        return true;
    }

    /**
     * 修改指定索引的客户信息
     * @param index 要求改的索引
     * @param customer 修改后的客户类
     * @return 是否成功
     */
    public  boolean replaceCustomer(int index,Customer customer){
        if(index<0||index>=total){
            return  false;
        }
        customers[index]=customer;
        return  true;
    }

    /**
     * 删除指定索引的客户
     * @param index 删除索引
     * @return 是否成功删除
     */
    public boolean deleteCustomer(int index){
        if(index<0||index>=total){
            return  false;
        }
        for (int i=index;i<total-1;i++){
            customers[i]=customers[i+1];
        }
        customers[total-1]=null;
        total--;
        return  true;
    }

    /**
     * 获取所有客户信息
     * @return 所有非空客户信息
     */
    public Customer[] getAllCustomers(){
        Customer[] custs=new Customer[total];
        for (int i=0;i<total;i++){
            custs[i]=customers[i];
        }
        return  custs;
    }

    /**
     * 获取指定位置的索引
     * @param index 获取的索引
     * @return 找到返回Customer，未找到返回null
     */
    public Customer getCustomer(int index){
        if(index<0||index>=total){
            return  null;
        }
        return  customers[index];
    }

    /**
     * 返回客户总数
     * @return
     */
    public int getTotal(){
        return total;
    }
    //endregion
}
